package com.supplychain.financial.parent.api;

import com.supplychain.financial.parent.entity.DTO.PageDTO;
import com.supplychain.financial.parent.common.exception.CustomException;

import java.util.List;
import java.util.Map;

public interface KtProdService {
	/**
	 * 根据父节点获取子节点商品类型
	 * @param parameter
	 * @return
	 */
	List<Map<String,Object>> getSubProdType(Map parameter);
	
	/**
	 * 获取商品类型
	 * @param page
	 * @param pageSize
	 * @param parentId
	 * @return
	 */
	PageDTO<Map<String,Object>> getProdTypeListByPage(Integer page, Integer pageSize, String filters);
	/**
	 * 保存商品类型
	 * @param parameter
	 */
	void saveProdType(Map parameter);



	PageDTO<Map<String,Object>> getProdInfoListByPage(Integer page, Integer pageSize, String filters);

	PageDTO<Map<String,Object>> getProdPriceListByPage(Integer page, Integer pageSize, String filters);

	PageDTO<Map<String,Object>> getProdTypePriceListByPage(Integer page, Integer pageSize, String filters);

	/**
	 * 获取店铺列表
	 * @param page
	 * @param pageSize
	 * @param filters
	 * @return
	 */
	PageDTO<Map<String,Object>> getShopListByPage(Integer page, Integer pageSize, String filters);

	/**
	 * 获取店铺采购商品列表
	 * @param page
	 * @param pageSize
	 * @param filters
	 * @return
	 */
	PageDTO<Map<String,Object>> getRecommendProdByPage(Integer page, Integer pageSize, String filters);

	/**
	 * 获取总部采购商品列表
	 * @param page
	 * @param pageSize
	 * @param filters
	 * @return
	 */
	PageDTO<Map<String,Object>> getCenterRecommendProdByPage(Integer page, Integer pageSize, String filters);


	/**
	 *
	 * @param page
	 * @param pageSize
	 * @param filters
	 * @return
	 */
	PageDTO<Map<String,Object>> getProdBrandListByPage(Integer page, Integer pageSize, String filters);

	/**
	 * 供应商商品查询
	 * @param page
	 * @param pageSize
	 * @param filters
	 * @return
	 */
	PageDTO<Map<String,Object>> getSupplierProdList(Integer page, Integer pageSize, String filters);


	/**
	 * 保存商品
	 * @param parameter
	 */
	void saveProd(Map parameter) throws CustomException;

	/**
	 * 获取组合商品的明细
	 * @param productCode
	 * @return
	 */
	List<Map<String,Object>> getGroupProductItem(Map parameter);
	/**
	 * 价格下放
	 * @param parameter
	 */
	void saveProdPrice2Shop(Map parameter);


	List<Map<String,Object>> getDict(Map parameter);

	List<Map<String,Object>> getProdProperty(Map parameter);

	void saveSupplierProd(Map parameter) throws CustomException;

	List<Map<String,Object>> getProdPriceType();

	void updateProdDiscountPriceByType(Map parameter);

	void saveProdBrand(Map parameter);

	/**
	 * 获取商品的供应商
	 * @param parameter
	 * @return
	 */
	List<Map<String,Object>> getProdSupplier(Map parameter);

	/**
	 * 获取总部采购紧俏烟列表
	 * @param page
	 * @param pageSize
	 * @param filters
	 * @return
	 */
	PageDTO<Map<String,Object>> getCenterRecommendTightTobaccoByPage(Integer page, Integer pageSize, String filters);
	
	
	void deleteTightTobacco();
	
	void saveTightTobacco(Map parameter);

	/**
	 * 获取商品商品库存
	 * @param parameter
	 * @return
	 */
	Map<String,Object> gatStockProd(Map parameter);
}
